﻿#pragma once

#include <learn/ais/ais_point.h>

namespace xi
{

namespace ais
{

class EXT_SYMBOL AIS_AuxiliaryPoint : public AIS_Point
{
  public:
    AIS_AuxiliaryPoint(AIS_AuxiliaryPoint &&) = delete;

    /**
     * @brief 特殊构造
     *
     * @param[in] getter
     * @param[in] setter
     */
    AIS_AuxiliaryPoint(std::function<Vec3()> getter, std::function<void(Vec3)> setter);

    /**
     * @brief 刷新消息
     *
     * @param[in] msg
     */
    void visit(AIS_UpdateMsg *msg) override;

    /**
     * @brief 移动消息
     *
     * @param[in] msg
     */
    void visit(AIS_MoveMsg *msg) override;

  protected:
    std::function<Vec3()> m_getter;
    std::function<void(Vec3)> m_setter;
};

} // namespace ais

} // namespace xi
